The present invention relates to an automated application program development system and method. More particularly, the present invention relates to an automated application program development system and method which enables automated development of complete operational COBOL programs for stand alone applications or subroutines.
Most application programming is left to management information systems (MIS) personnel. However, typical MIS personnel do not have a good understanding of the application needs of the end user. Some studies have shown that the vast amount of effort spent debugging an application in a typical MIS department is related to errors which were introduced during the requirements specification process. A lesser amount of time is spent on bugs introduced during the detailed design while an even lesser amount is spent on bugs created in the coding phase. Merely increasing the user's up front involvement and spending more time on traditional design will not facilitate application program development. Further, programmer productivity can only be increased up to a certain point. Simply helping talented programmers to write code faster does not address the overall application program development problem, but rather only serves as a stop gap measure.
Many programmer productivity tools have been developed and are currently on the market. The limitations include the fact that you have to have a person skilled in programming and programming language to utilize them. In addition, they are implemented rather late in the application program development cycle and only do a partial job. Many of these programmer productivity tools facilitate programmer design reports and screens, and even produce modules of code, but these various pieces of productivity still have to be knitted together by a programmer to create an operational application program. Furthermore, these programmer productivity tools are not very flexible. If the application does not meet the user's requirements, there is considerable time and expense required to modify and recode it.
At the other end of the spectrum are pure design tools or methodologies. They may provide a graphic representation of logic flow, and the relationship of modules within a system design, but they do not produce code and they do not give an end user an operating application program.
The key to improving efficiency in the application program development process and one which current development tools do not provide, is to improve the efficiency of the communication process between the people who are going to use the system and the people who are going to build it. In the application development continuum, the user and analyst have to be able to clearly communicate and understand exactly what the application is supposed to produce and how it will flow logically to produce those results during the functional specification stage of the development.
During the detailed design and coding and checkout stages which are very technical and overwhelming to the end user, the end user will frequently lose contact with the overall development process. They then do not become involved again until the testing stage to determine whether the application program performs to their expectations. If it does not, the design must be revised and the code rewritten which is very time consuming and expensive.
The present invention solves many of the problems of conventional programmer productivity tools.